package com.hthy.futures.adapter;

import android.content.Context;
import android.graphics.Color;
import android.widget.TextView;

import com.hthy.futures.R;
import com.hthy.futures.base.CommonAdapter;
import com.hthy.futures.base.CommonViewHolder;
import com.hthy.futures.bean.BillSearchBean;
import com.hthy.futures.utils.StringUtils;

import static com.vilyever.resource.Resource.getResources;

/**
 * Author:  Mr.bingley
 * Version:
 * Date:  2017/4/5
 */

public class BillSearchAdapter extends CommonAdapter<BillSearchBean> {


    public BillSearchAdapter(Context context, int layoutId) {
        super(context, layoutId);
    }

    @Override
    public void convert(CommonViewHolder vh, BillSearchBean item) {
        // 这边少了商品名称字段
        //vh.setText(R.id.tv_trade_name, item.get_$8048() + "(" + item.get_$55() + ")");
        vh.setText(R.id.tv_trade_name, item.getSsProductCode());

        // 单号
        vh.setText(R.id.tv_trade_number, item.getUiOrderUid());
        // 订单数量 和 成交数量有什么区别
        vh.setText(R.id.tv_handle_num, StringUtils.toDoubleStr(item.getDbOrderSize()));

        // 库存费 ??
        vh.setText(R.id.tv_holding_price, StringUtils.toDoubleStr(item.getDbLastSwap()));

        // 平仓数量
        vh.setText(R.id.tv_stock_num, StringUtils.toDoubleStr(item.getDbCloseOrderSize()));

        // 平仓价
        vh.setText(R.id.tv_price, StringUtils.toDoubleStr(item.getDbClosePrice()));   // 开仓价

        // 开仓时间
        vh.setText(R.id.tv_time, item.getSsExecuteTime());

        // 盈亏  8099 盈亏
        double prifitPrice = StringUtils.toDouble(item.getDbOpenClosePl());
        TextView view = (TextView) vh.getView(R.id.tv_open_price);
        if (prifitPrice > 0) {
            view.setTextColor(Color.RED);
        } else if (prifitPrice == 0) {
            view.setTextColor(Color.GRAY);
        } else if (prifitPrice < 0) {
            view.setTextColor(getResources().getColor(R.color.fund_float));
        }
        vh.setText(R.id.tv_open_price, StringUtils.toDoubleStr(item.getDbOpenClosePl()));

        // 开仓数量
        vh.setText(R.id.tv_close_num, StringUtils.toDoubleStr(item.getDbExecuteSize()));

        // 开 仓 价
        vh.setText(R.id.tv_stop_profit, StringUtils.toDoubleStr(item.getDbHoldPrice()));  // 这个有两个字段对应吗？

        // 止 盈 价
        vh.setText(R.id.tv_stop_profit_price, 0 == StringUtils.toDouble(item.getDbTpPrice()) ? "" : StringUtils.double_df.format(StringUtils.toDouble(item.getDbTpPrice())));  // 止 盈 价

        // 规定如果没有 止 盈 价  止 损 价 ，就直接空白
        // 还得通过计算他的百分比来是否显示
        // 止盈止损百分比计算过程           （在单据那边如果止损百分比>95%，也是不显示的）  TODO
        // 买 ：  止损价 = 当前价-（（保证金*止损百分比）/ 合约单位） ， 止盈价 = 当前价 +（（保证金*止盈百分比）/ 合约单位）
        // 卖的话：止损价 = 当前价+（（保证金*止损百分比）/ 合约单位）   止盈价 = 当前价 -（（保证金*止盈百分比）/ 合约单位）
        double zs = StringUtils.toDouble(item.getDbSlPrice());  // 止 损 价
        if (zs > 0) {
            String item_$54 = item.getOrderDirectionValue(); // 先判断买卖方向
            double uiPrice = StringUtils.toDouble(item.getDbHoldPrice());  // 当前价  这里取开仓价
            double contractUnit = StringUtils.toDouble(item.contractUnit); // 合约单位
            double initGuaranteeMoney = StringUtils.toDouble(item.initGuaranteeMoney);// 初始保障金
            String moneyHoldType = item.moneyHoldType;   // 保证金类型
            double hand_sum = StringUtils.toDouble(item.getDbOrderSize());// 手数
            // 计算保证金-------
            double mAccupidMoney = 0;
            // 判断是保证金类型（包括比例与固定两种）
            if (moneyHoldType.equals("1")) {  // 比例
                // 占用保证金 = 商品信息->初始保证金 * 行情价 * 合约数量 * 单据数量
                mAccupidMoney = initGuaranteeMoney * uiPrice * contractUnit * hand_sum;
            } else if (moneyHoldType.equals("2")) {
                // 占用保证金 = 商品信息->初始保证金 * 单据数量
                mAccupidMoney = initGuaranteeMoney * hand_sum;
            }

            // 计算止损百分比     b 止损百分比 = （当前价-止损价）*合约单位/保证金    s 止损百分比 = （止损价-当前价）*合约单位/保证金
            double zsbfb = 0;
            if (item_$54.equals("b")) {
                zsbfb = (uiPrice-zs)*contractUnit/mAccupidMoney;
            } else {
                zsbfb = (zs - uiPrice)*contractUnit/mAccupidMoney;
            }
            if (zsbfb > 0.95) {
                item.setDbSlPrice("");
            }
        }

        // 止 损 价 8025 slprice
        vh.setText(R.id.tv_stop_outprice, 0 == StringUtils.toDouble(item.getDbSlPrice()) ? "":StringUtils.double_df.format(StringUtils.toDouble(item.getDbSlPrice())));  // 止 损 价

        // 平仓时间  60 成交时间
        vh.setText(R.id.tv_pingcan_time, item.getSsCloseTime());


        // 8028 子订单类型 1 - buy , 2 - sell , 3 - buy limit 4 - buy stop 5 - sell limit 6 - sell stop
        String item_$8028 = item.getLimitOrderTypeValue();
        int orderType = Integer.parseInt(item_$8028);
        switch (orderType) {
            case 1:
                vh.setText(R.id.tv_trade_diration, getResources().getString(R.string.buy));
                vh.getView(R.id.tv_trade_diration).setBackground(getResources().getDrawable(R.drawable.round_red));
                break;
            case 2:
                vh.setText(R.id.tv_trade_diration,  getResources().getString(R.string.sell));
                vh.getView(R.id.tv_trade_diration).setBackground(getResources().getDrawable(R.drawable.round_blue));
                break;
            case 3:
                vh.setText(R.id.tv_trade_diration, getResources().getString(R.string.pending_type_buystop));
                vh.getView(R.id.tv_trade_diration).setBackground(getResources().getDrawable(R.drawable.round_red));
                break;
            case 4:
                vh.setText(R.id.tv_trade_diration, getResources().getString(R.string.pending_type_buylimit));
                vh.getView(R.id.tv_trade_diration).setBackground(getResources().getDrawable(R.drawable.round_red));
                break;
            case 5:
                vh.setText(R.id.tv_trade_diration, getResources().getString(R.string.pending_type_buystop));
                vh.getView(R.id.tv_trade_diration).setBackground(getResources().getDrawable(R.drawable.round_blue));
                break;
            case 6:
                vh.setText(R.id.tv_trade_diration, getResources().getString(R.string.pending_type_selllimit));
                vh.getView(R.id.tv_trade_diration).setBackground(getResources().getDrawable(R.drawable.round_blue));
                break;
        }

        /**
         * 订单状态
         */
        String item_$39 = item.getOrderStatusValue();
        int orderState = Integer.parseInt(item_$39);
        switch (orderState) {
            case 1:
                vh.setText(R.id.tv_trade_state, "(未成交)");
                break;
            case 2:
                vh.setText(R.id.tv_trade_state, "(持仓单)");
                break;
            case 3:
                vh.setText(R.id.tv_trade_state, "(已撤销)");
                break;
            case 4:
                vh.setText(R.id.tv_trade_state, "(部分成交)");
                break;
            case 5:
                vh.setText(R.id.tv_trade_state, "(全部平仓)");
                break;
        }

    }


}
